package com.ocean.business.service.impl;

import com.ocean.business.domain.OProductDeptDo;
import com.ocean.business.domain.OProductUseDo;
import com.ocean.business.mapper.BusinessMySQLDataTransitionMapper;
import com.ocean.business.service.IBusinessMySQLDataTransitionService;
import com.ocean.common.core.domain.entity.SysDept;
import com.ocean.common.utils.StringUtils;
import com.ocean.system.domain.SysTSBaseUserDo;
import com.ocean.system.domain.SysTSDepartDo;
import com.ocean.system.domain.SysUserDo;
import com.ocean.system.service.ISysDeptService;
import com.ocean.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: FuGui Wang
 * @Description: 后台系统-mysql数据处理 service interface impl
 * @Date 2022/12/5
 * @Version V1.1.0
 */
@Service
public class BusinessMySQLDataTransitionServiceImpl implements IBusinessMySQLDataTransitionService {

    @Autowired
    private BusinessMySQLDataTransitionMapper dataTransitionMapper;

    @Autowired
    private ISysDeptService deptService;

    @Autowired
    private ISysUserService userService;

    /**
     * 查询 t_s_depart 表中组织数据
     * @return 组织数据集合
     */
    @Override
    public void dataTransitionDept() {
        // 查询 t_s_depart 表中组织数据
        List<SysTSDepartDo> businessTSDepartDos = dataTransitionMapper.selectDepart();
        // 创建组织实体对象集合
        List<SysDept> sysDeptList = new ArrayList<>();
        // 遍历数据集合,处理数据
        for (SysTSDepartDo businessTSDepartDo : businessTSDepartDos) {
            SysDept sysDept = new SysDept();
            BeanUtils.copyProperties(businessTSDepartDo,sysDept);
            // 组织名称
            if(StringUtils.isNotBlank(businessTSDepartDo.getDepartname())){
                sysDept.setDeptName(businessTSDepartDo.getDepartname());
            }
            // 排序
            if(null != businessTSDepartDo.getSortOrder()){
                sysDept.setOrderNum(businessTSDepartDo.getSortOrder());
            }
            sysDeptList.add(sysDept);
        }
        // 遍历数据集合,执行新增
        for (SysDept sysDept : sysDeptList) {
            deptService.insertDept(sysDept);
        }
    }

    /**
     * 数据转换-产品组织中间表 o_product_dept
     */
    @Override
    public void dataTransitionProductDept() {
        // 关联查询 o_product_use，t_s_depart 数据
        List<OProductUseDo> productUseDos = dataTransitionMapper.selectProductUseAndDepart();
        // 遍历数据集合
        for (OProductUseDo productUseDo : productUseDos) {
            // 判断组织编码不为空
            if(StringUtils.isNotBlank(productUseDo.getDepartcode())){
                // 根据组织编码去组织表 sys_dept 中查询对应数据，返回id
                Integer deptId = dataTransitionMapper.selectDeptByDepartcode(productUseDo.getDepartcode());
                if(null != deptId && deptId != 0){
                    // 创建产品组织中间表实体对象
                    OProductDeptDo oProductDeptDo = new OProductDeptDo();
                    BeanUtils.copyProperties(productUseDo, oProductDeptDo);
                    oProductDeptDo.setDepartId(deptId);
                    // 将数据存入 o_product_dept 新的关联表中
                    dataTransitionMapper.insertProductDept(oProductDeptDo);
                }
            }
        }
    }

    /**
     * 数据转换-用户表 t_s_base_user
     */
    @Override
    public void dataTransitionSysUser() {
        // 查询 t_s_base_user 表数据
        List<SysTSBaseUserDo> sysTSBaseUserDos = dataTransitionMapper.selectTSBaseUserAll();
        // 创建ruoyi用户表对象集合
        List<SysUserDo> sysUserDos = new ArrayList<>();
        // 遍历旧数据集合
        for (SysTSBaseUserDo sysTSBaseUserDo : sysTSBaseUserDos) {
            // 创建若依数据实体对象
            SysUserDo sysUserDo = new SysUserDo();
            BeanUtils.copyProperties(sysTSBaseUserDo,sysUserDo);
            // 用户名
            if(StringUtils.isNotBlank(sysTSBaseUserDo.getUserName())){
                sysUserDo.setLoginName(sysTSBaseUserDo.getUserName());
            }
            // 真实名称
            if(StringUtils.isNotBlank(sysTSBaseUserDo.getRealName())){
                sysUserDo.setUserName(sysTSBaseUserDo.getRealName());
            }
            // 帐号状态（0激活 1未激活）
            if(StringUtils.isNotBlank(sysTSBaseUserDo.getStatus())){
                if(sysTSBaseUserDo.getStatus().equals("1")){
                    sysUserDo.setStatus("0");
                }
                if(sysTSBaseUserDo.getStatus().equals("0")){
                    sysUserDo.setStatus("1");
                }
            }
            sysUserDos.add(sysUserDo);
            // 解密 密码
            if(StringUtils.isNotBlank(sysTSBaseUserDo.getPassword())){

            }
            // 盐加密
        }
        int a = 1;
    }
}
